
desc:ForRetroRec(Audio) v20151213(b1)
options:maxmem=33554432
slider1:1<0,4096,1>-Track Number
slider2:0<0,1,1>-Insert Audio
slider3:0<0,4095,1>-Slot
slider4:0<0,33554432,1>-DATA
slider5:1<0,1,1{No(As Rec Out Mode),Yes(As Rec Normal Mode)}>Compensate Latency
slider6:0<0,8192,1>-data
@init
ext_noinit=1;
buf=0;
//max_buf=65536-8192*4;//MaxBuf For Experi Only,DEL IT***
max_buf=33554432-8192*4;//MaxBuf Val=33521664
res_buf=8192*2;//Reserve buffer for Compensate Latency
items=33550336;//Offset for DATA(last 4096 slots)
Thresh=10;//Its Optimal Thresh Value 
items[4094]=srate;//Save Srate(4094 slot)
@slider 
Track_Num = slider1;
Insert = slider2;
//==DATA Sliders==//
//==Data cycle=3,Set 0,3,6,9,12 etc for Read-Set data=//=4092,4093,4094==Item Count,Total Lenhth(smpl),srate==//
//==Data slider represent Item Start(in sec),other values set S_Start,S_Len for Insert Audio==//
slider5 ? Lat_Offset=(slider6)*2 : Lat_Offset=0;
slider4=items[slider3];//slider3=MAIN CONTROL SLIDER,slider4=MAIN DATA SLIDER!!!
S_Start=items[slider3+1]+Lat_Offset;//Item buf pos-offset(Star) in smpls for export_buff()
S_Len=items[slider3+2];//ITEM Lenght in smpls for export_buff()
@block
Start_Play_Position = play_position;//B_start
    //==If play position changed,Save Last Ppos,Prev Len,Start Ppos and buf pos-offset to memory==// 
(i>0&&i<max_buf)&&(play_state==1||play_state==5)&&abs(Start_Play_Position-Last_Play_Position)>0.125 ? 
                                                  (items[4092]+=1;//Its New Item,Update Item_Count
                                                   items[j]=i/2-items[j-1]/2;//Its PREV_ITEM Lenght(in smpls)
                                                   j+=1;//To Next data Cycle
                                                   items[j]=Start_Play_Position;//New ITEM start(in sec)
                                                   items[j+1]=i;//Item buf pos-offset(in smpls)
                                                   j+=2;
                                                   );//End

Last_Play_Position = Start_Play_Position+samplesblock/srate;//B_end
@sample
slider6==8192 ? (i=0; j=0; items[4093]=0; items[4092]=0; slider6=0;);//i,j,len,count=0 value=8192(from RRScript) 
play_state==0 ? (i=0; j=0;);//i,j=0 when playback stopped
play_state==1||play_state==5 ? 
          (i==0 ? (maxsamples = max(abs(spl0),abs(spl1)) * 10^16;//maxsmplval*10^16
           maxsamples>Thresh ? (items[4092]=1;//Its 1-st Item in Item_Count
                                items[0]=play_position;//1-st item play_pos
                                items[1]=0;//1-st item buf pos-offset,always=0
                                j=2;)  :   items[4093]=0;);//Else reset TOTAL Lenght
           
           //==Save each Sample to buf[]==//
           i<=max_buf+res_buf && maxsamples>Thresh ? (buf[i]=spl0;buf[i+1]=spl1;
                                                      items[4093]=i/2;//Its TOTAL Lenght
                                                        //If,then Update temporary LAST_ITEM Lenght(in smpls)//
                                                        i<=max_buf ? items[j]=i/2-items[j-1]/2;
                                                      i+=2;);
           );//End
//==Mute True,else Pass True(to next JS)==//
i>max_buf ? (spl0=spl0;spl1=spl1;) : (spl0=0;spl1=0;);
@gfx 1 1
Insert==1 ? (Insert=0; export_buffer_to_project(S_Start,S_Len,2,srate,Track_Num,0,tempo); slider2=0;);

